package br.unicamp.ic.inf300.arena.modelo.artistico;
/**
 * Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * Espetaculo.java
 */

import java.sql.Time;

public class Espetaculo {
	public static final int TIPO_ESPETACULO_PECA = 0;
	public static final int TIPO_ESPETACULO_FILME = 1;

	private int codEspetaculo;
	private String titulo;
	private String genero;
	private String sinopse;
	private int censura;
	private String elenco;
	private int tipo;
	private Time duracao;

	//--
	public Espetaculo() {}
	
	/**
	 * 
	 * @param titulo
	 * @param genero
	 * @param sinopse
	 * @param censura
	 * @param elenco
	 * @param tipo
	 * @param duracao
	 */
	public Espetaculo(String titulo, String genero, String sinopse,
			int censura, String elenco, Time duracao) {
		super();
		this.titulo = titulo;
		this.genero = genero;
		this.sinopse = sinopse;
		this.censura = censura;
		this.elenco = elenco;
		this.duracao = duracao;
	}

	public int getCensura() {
		return censura;
	}
	
	public void setCensura(int censura) {
		this.censura = censura;
	}

	public String getGenero() {
		return genero;
	}

	public void setGenero(String genero) {
		this.genero = genero;
	}

	public String getSinopse() {
		return sinopse;
	}

	public void setSinopse(String sinopse) {
		this.sinopse = sinopse;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public int getCodEspetaculo() {
		return codEspetaculo;
	}

	public void setCodEspetaculo(int codEspetaculo) {
		this.codEspetaculo = codEspetaculo;
	}

	public String getElenco() {
		return elenco;
	}

	public void setElenco(String elenco) {
		this.elenco = elenco;
	}

	public int getTipo() {
		return tipo;
	}

	public void setTipo(int tipo) {
		this.tipo = tipo;
	}

	public Time getDuracao() {
		return duracao;
	}

	public void setDuracao(Time duracao) {
		this.duracao = duracao;
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("Espetaculo ( ")
	        .append(super.toString()).append(TAB)
	        .append("censura = ").append(this.censura).append(TAB)
	        .append("codEspetaculo = ").append(this.codEspetaculo).append(TAB)
	        .append("duracao = ").append(this.duracao).append(TAB)
	        .append("elenco = ").append(this.elenco).append(TAB)
	        .append("genero = ").append(this.genero).append(TAB)
	        .append("sinopse = ").append(this.sinopse).append(TAB)
	        .append("tipo = ").append(this.tipo).append(TAB)
	        .append("titulo = ").append(this.titulo).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + codEspetaculo;
		result = prime * result + tipo;
		result = prime * result + ((titulo == null) ? 0 : titulo.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		final Espetaculo other = (Espetaculo) obj;
		if (codEspetaculo != other.codEspetaculo)
			return false;
		if (tipo != other.tipo)
			return false;
		if (titulo == null) {
			if (other.titulo != null)
				return false;
		} else if (!titulo.equals(other.titulo))
			return false;
		return true;
	}
}